export const layouts = {
  circle: {
    name: "circle",
    padding: 50,
    avoidOverlap: true, // 防止节点重叠
    nodeSpacing: 50, // 节点之间最小间距
    animate: true,
    animationDuration: 500,
    animationEasing: "ease-out",
  },
  grid: {
    name: "grid",
    padding: 50,
    avoidOverlap: true,
    nodeSpacing: 50,
    spacingFactor: 1.5, // 整体放大系数
    animate: true,
    animationDuration: 500,
    animationEasing: "ease-out",
  },
  dagre: {
    name: "dagre",
    fit: false, // 不自动缩放
    rankDir: "TB", // 方向，TB: 从上到下, LR: 从左到右
    align: "UL", // 对齐方式：UL（左上角对齐），UR（右上角对齐），DL（左下角对齐），DR（右下角对齐）
    nodeSep: 40, // 节点间隔
    edgeSep: 40, // 边缘间隔
    rankSep: 80, // 阶段间隔
    animate: true,
    animationDuration: 300, // 动画时长
    animationEasing: "ease-out", // 动画缓动函数
  },
  coseBilkent: {
    name: "cose-bilkent",
    fit: true, // 保持适配，但不要padding太大
    padding: 30, // 适中一点
    animate: "end",
    animationDuration: 500,
    randomize: false, // 禁止随机，初始更稳定
    nodeDimensionsIncludeLabels: true,
    idealEdgeLength: 80, // 比较短，边不会太长
    nodeRepulsion: 1500, // 适中，避免节点挤在一起，但也不会太远
    edgeElasticity: 0.45,
    nestingFactor: 0.8, // 提高一点，减少空隙
    gravity: 1.2, // 重力大一些，节点更往中心靠拢
    numIter: 1500, // 迭代次数足够了，不用太大
    tile: true, // 如果是分区布局，可以开启 tile
  },
} as const;

// 提供 layout 的合法类型，增强类型安全
export type LayoutName = keyof typeof layouts;
